Thiết kế chính của Javacard là tính lưu chuyển và bảo mật. Java Card

Tính lưu chuyển

Được xác định bởi thẻ thông minh cho phép các applet của Javacard có thể chạy trên các thẻ thông minh khác nhau, nó cũng tương tự như các applet trên máy tính. Tính lưu chuyển làm giảm đáng kể kích thước bộ nhớ, tăng hiệu năng, và hỗ trợ môi trường runtime (ví dụ cho các protocol kết nối hoặc các thuật toán mã hóa).

Tính bảo mật

Javacard đầu tiên được phát triển với mục đích bảo mật thông tin lưu trữ trên thẻ thông minh. Tính bảo mật được xác định bởi các tiêu chuẩn sau:

Tính bao đóng dữ liệu

Dữ liệu được lưu trữ trong các ứng dụng, và các ứng dụng Javacard được chạy trong môi trường cô lập (máy ảo của Javacard) phân tách với hệ điều hành và phần cứng.

Tường lửa applet

Không giống với máy ảo Java, máy ảo JavaCard thường quản lý vài trình ứng dụng, mỗi một trong số chúng điều khiển một dữ liệu nhạy. Các trình ứng dụng khác nhau có thể phân tách với nhau bởi các tường lửa applet được giới hạn và kiểm tra sự truy cập của các thành phần dữ liệu của một applet với các applet khác.

Mã hóa

Sử dụng thuật toán khóa đối xứng như DES, Triple DES, AES và thuật toán bất đối xứng như RSA, mã hóa đường cong Eclipse. Các dịch vụ mã hóa khác như chữ ký, khởi tạo khóa và trao đổi khóa cũng được hỗ trợ.